{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 向量空间（Vector Space）\n",
    "\n",
    "对加法、数乘运算封闭的向量集合，就叫做向量空间，简称空间。\n",
    "\n",
    "若集合 $V$ 是向量空间，则对 $V$ 内的任意向量 $u$ 和 $v$，都有：**$u + v$ 和 c$u$ 仍然在 $V$ 内**.（完整定义就不给出了，毕竟是偏应用）\n",
    "\n",
    "#### 性质\n",
    "\n",
    "零向量的加法、数乘结果都是它自身，所以它构成一个向量空间：Zero Sapce.\n",
    "\n",
    "### 2. 子空间（SubSpace）\n",
    "\n",
    "若集合 $W$ 是向量空间，而且 $W \\subset V$，则称 $W$ 是 $V$ 的子空间。\n",
    "\n",
    "#### 性质\n",
    "\n",
    "1. 任意向量空间都是它自身的子空间\n",
    "2. Zero Space 是任意向量空间的子空间"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 预备知识：\n",
    "\n",
    "### 1.线性相关性\n",
    "\n",
    "对 $A=\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$，如果齐次矩阵方程 $Ax=0$ 有唯一解，称$A$的列向量 $\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$线性无关。易知该唯一解为零向量 $O_n$。\n",
    "\n",
    "否则，称 $\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$ 线性相关。\n",
    "\n",
    "通俗地说，线性相关就是 $\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$ 中，存在某向量是其他向量的线性组合。从列空间（后面会谈）的角度说，这个“某向量”对列空间没有任何贡献，删掉它列空间仍然不变。\n",
    "\n",
    "换种说法，线性相关就是 $A$ 中存在自有变量。\n",
    "\n",
    "#### 性质\n",
    "1. 第三节说过矩阵可逆等价于A没有自由变量，因此**列向量线性相关等价于矩阵A不可逆**\n",
    "1. 零向量可以是任意向量的线性组合，因此若 $\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$ 中存在零向量，则它们线性相关。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一、零空间（Null Space）和列空间（Column Space）\n",
    "\n",
    "### 1. 零空间（Null Space）\n",
    "\n",
    "齐次方程 $Ax=0$ 的解集被称作 Null Space. （从名字也可以看出，这个解集满足向量空间的定义）\n",
    "\n",
    "解法：首先用行简化算法得到 $A$ 的简化阶梯形式 $R$，然后做**列变换**（这里有点看不懂，移项没问题？）将它变换成 $\\begin{pmatrix}I & F\\end{pmatrix}$ 形式，其中 $I$ 为主元列（简化成了单位矩阵），$F$ 由自由列组成，顺序随意。然后移项得\n",
    "\n",
    "$$\n",
    "x_{pivot}=-Fx_{free} \\\\\n",
    "\\begin{bmatrix}\n",
    "I & F \\\\\n",
    "\\end{bmatrix}\n",
    "\\begin{bmatrix}\n",
    "x_{pivot} \\\\\n",
    "x_{free} \\\\\n",
    "\\end{bmatrix}=0 \\\\\n",
    "\\begin{bmatrix}\n",
    "x_{pivot} \\\\\n",
    "x_{free} \\\\\n",
    "\\end{bmatrix}=\\begin{bmatrix}\n",
    "-F \\\\\n",
    "I \\\\\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "$Ax=0$ 的线性无关的特解数，应该等于自由变量数。用它所有线性无关的特解构成的矩阵，叫零空间矩阵$N$（nullspace matrix）。\n",
    "\n",
    "从列视点来看，可得 $RN=0$。（列视点参见矩阵乘法那一节）\n",
    "\n",
    "$N$ 的列空间就是 $Ax=0$ 的零空间。\n",
    "\n",
    "实际上，\n",
    "$$\n",
    "N=\\begin{bmatrix}\n",
    "x_{pivot} \\\\\n",
    "x_{free} \\\\\n",
    "\\end{bmatrix}=\\begin{bmatrix}\n",
    "-F \\\\\n",
    "I \\\\\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "#### Note\n",
    "\n",
    "1. 要分清 Null Space 和 Zero space，Zero Subspace 是只包含零向量的子空间。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 列空间（Column Space）\n",
    "\n",
    "Column Space 是指矩阵 $A$ 的列向量所有线性组合的集合。\n",
    "\n",
    "若 $A=\\begin{pmatrix}a_1 & a_2 & ... & a_n\\end{pmatrix}$，则 $Col\\ A = Span\\{a_1,\\ a_2,\\ ...,\\ a_n\\}$.\n",
    "\n",
    "#### 2.1 性质\n",
    "\n",
    "1. $m × n$ 的矩阵 $A$ 的列向量的线性组合是一个 $m × 1$ 的列向量，它是 $m$ 维空间 $R^m$ 内的一个坐标。因此 $A$ 的列空间是 $R^m$ 的子空间。\n",
    "1. 若 $Ax=b$ 对任意的 $b$ 都有解，从列空间的角度说，就是 $A$ 的列空间（列向量的所有线性组合，$Ax$）包含 $R^m$（$b$ 可以是 $R^m$ 的任意一个坐标，所以 $b$ 的集合就是$R^m$）。又由性质一知，这时$A$ 的列空间就是 $R^m$。\n",
    "\n",
    "#### Note\n",
    "\n",
    "1. 前面说过行变换和列变换有不同的地位，这里列空间和行空间也是，我们\"**偏爱行变换和列空间**\"。\n",
    "1. 矩阵的初等行变换不改变 $A$ 的列向量之间的线性相关性，也不改变 **Ax=b** 的解空间（增广矩阵时），但是它会改变 $A$ 的列空间。\n",
    "1. 对 $m × n$ 的矩阵 $A$ 而言，列空间是 $R^m$ 的子空间，而 Null Space 是 $R^n$ 的子空间。\n",
    "\n",
    "**后面会看到，Null Space 和 Column Space 之间有着惊人的联系。**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 二、Ax=b 的解\n",
    "\n",
    "解 = 齐次方程的通解（零空间） + 非齐次方程的特解（特解向量）\n",
    "\n",
    "齐次方程的通解之前已经求过了，非齐次的特解其实更简单（因为只需要一个就行）：令所有自由变量值为0，就得到一个非齐次方程的特解。\n",
    "\n",
    ">P.S. 还记得微分方程的解么？也是这个形式，这不是偶然，后面会看到，微分方程实际上也是线性方程。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
